/**
 * Copyright &copy; 2012-2016 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 */
package com.server.modules.sys.dao.schedule;

import com.server.common.persistence.CrudDao;
import com.server.common.persistence.annotation.MyBatisDao;
import com.server.modules.sys.entity.schedule.Schedule;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 日程DAO接口
 * @author 丁光彪
 * @version 2016-12-23
 */
@MyBatisDao
public interface ScheduleDao extends CrudDao<Schedule> {

    public List<Schedule> getScheduleList(@Param("userId")String userId,  @Param("start")Date start, @Param("end")Date end);
    /**
     * 获取用户在显示范围内的不重复的日程列表
     * @param userId 用户标识
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param type 类型-事项、会议;传入为空则不区分获取全部
     * @return 不重复日程列表
     */
    public List<Schedule> getNoRepeatScheduleList(@Param("userId")String userId,  @Param("startTime")Date startTime, @Param("endTime")Date endTime,@Param("type")String type );
    /**
     * 获取用户在显示范围内的重复日程列表
     * @param userId 用户标识
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param type 类型-事项、会议;传入为空则不区分获取全部
     * @return 重复日程列表
     */
    public List<Schedule> getRepeatScheduleList(@Param("userId")String userId,  @Param("startTime")Date startTime, @Param("endTime")Date endTime,@Param("type")String type );
    /**
     * 获取用户在显示范围内的重复日程列表
     * @param userId 用户标识
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param type 类型-事项、会议;传入为空则不区分获取全部
     * @param isRepeat 是否是重复日程
     * @return 我才创建的日程列表
     */
    public List<Schedule> getMyCreateScheduleList(@Param("userId")String userId,  @Param("startTime")Date startTime, @Param("endTime")Date endTime,@Param("type")String type,@Param("isRepeat")boolean isRepeat );

    /**
     * 获取用户在显示范围内的日程列表
     * @param userId 用户标识
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param type 类型-事项、会议;传入为空则不区分获取全部
     * @param isRepeat 是否是重复日程
     * @return 我才创建的日程列表
     */
    public List<Schedule> getOthersCreateScheduleList(@Param("userId")String userId,  @Param("startTime")Date startTime, @Param("endTime")Date endTime,@Param("type")String type,@Param("isRepeat")boolean isRepeat );

    /**
     * 获取全部日程
     * @param userId
     * @param startTime
     * @param endTime
     * @param type
     * @param isRepeat
     * @param isFirstPage
     * @return
     */
    public List<Schedule> getScheduleDataTableList(@Param("userId")String userId,  @Param("startTime")Date startTime, @Param("endTime")Date endTime,@Param("type")String type,@Param("isRepeat")boolean isRepeat,@Param("isFirstPage")boolean isFirstPage );


    /**
     * 获取用户在显示范围内的日程列表
     * @param userId 用户标识
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param type 类型-事项、会议;传入为空则不区分获取全部
     * @param isRepeat 是否是重复日程
     * @param isFirstPage 是否为第一页
     * @return 我才创建的日程列表
     */
    public List<Schedule> getMyCreateScheduleDataTableList(@Param("userId")String userId, @Param("startTime")Date startTime, @Param("endTime")Date endTime, @Param("type")String type, @Param("isRepeat")boolean isRepeat, @Param("isFirstPage")boolean isFirstPage );

    /**
     * 获取用户在显示范围内的日程列表
     * @param userId 用户标识
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param type 类型-事项、会议;传入为空则不区分获取全部
     * @param isRepeat 是否是重复日程
     * @param isFirstPage 是否为第一页
     * @return 我才创建的日程列表
     */
    public List<Schedule> getOthersCreateScheduleDataTableList(@Param("userId")String userId,  @Param("startTime")Date startTime, @Param("endTime")Date endTime,@Param("type")String type,@Param("isRepeat")boolean isRepeat,@Param("isFirstPage")boolean isFirstPage );
}